package com.podium.comment;

import lombok.Getter;
import lombok.Setter;

/**
 * @author 邵文泽
 * @description 返回结果
 * @date 2025/4/14 11:15
 */
@Getter
@Setter
public class AjaxResult<T> {

    /**
     * 成功状态码
     */
    public static final int SUCCESS_CODE = 200;

    /**
     * 默认错误状态码
     */
    public static final int ERROR_CODE = 500;

    /**
     * 状态码
     */
    private Integer code;

    /**
     * 提示信息
     */
    private String msg;

    /**
     * 数据
     */
    private T data;


    /**
     * 无参构造函数
     */
    public AjaxResult() {
    }

    /**
     * 带状态码和消息的构造函数
     *
     * @param code 状态码
     * @param msg  提示信息
     */
    public AjaxResult(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    /**
     * 带状态码、消息和数据的构造函数
     *
     * @param code 状态码
     * @param msg  提示信息
     * @param data 数据
     */
    public AjaxResult(int code, String msg, T data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }

    /**
     * 成功返回结果
     */
    public AjaxResult<T> success() {
        return new AjaxResult<>(SUCCESS_CODE, "success");
    }

    /**
     * 成功返回结果
     *
     * @param data 获取的数据
     */
    public AjaxResult<T> success(T data) {
        return new AjaxResult<>(SUCCESS_CODE, "success", data);
    }


    /**
     * 失败返回结果
     */
    public AjaxResult<T> error() {
        return new AjaxResult<>(ERROR_CODE, "error");
    }

    /**
     * 失败返回结果
     *
     * @param msg 错误信息
     */
    public AjaxResult<T> error(String msg) {
        return new AjaxResult<>(ERROR_CODE, msg);
    }

    /**
     * 失败返回结果
     *
     * @param msg  错误信息
     * @param data 获取的数据
     */
    public AjaxResult<T> error(String msg, T data) {
        return new AjaxResult<>(ERROR_CODE, msg, data);
    }

    /**
     * 失败返回结果
     *
     * @param code 状态码
     * @param msg  错误信息
     */
    public AjaxResult<T> error(int code, String msg) {
        return new AjaxResult<>(code, msg);
    }

}
